package com.ilancuo.regex;

/**
 * 正则表达式工具类
 * <p>
 * Created by ilancuo on 2018/4/8.
 */
public class RegexUtil {

    /**
     * 判断是否符合手机号码的规范
     *
     * @param phone
     * @return
     */
    public static boolean isphone(String phone) {
        if (phone != null) {
            String phoneRegex = "^1[3|4|5|7|8][0-9]\\d{8}$";
            return phone.matches(phoneRegex);
        }
        return false;
    }

    /**
     * 判断是否符合邮箱地址的规范
     *
     * @param emailAdress
     * @return
     */
    public static boolean isEmailAdress(String emailAdress) {
        if (emailAdress != null) {
            String emailAdressRegex = "^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$";
            // String emailAdressRegex2 = "\\w+@[\\w&&[^_]]+(\\.[a-zA-z]+)+";
            return emailAdress.matches(emailAdressRegex);
        }
        return false;
    }

    /**
     * 判断是否符合身份证号码的规范
     *
     * @param IDCard
     * @return
     */
    public static boolean isIDCard(String IDCard) {
        if (IDCard != null) {
            String IDCardRegex = "(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x|Y|y)$)";
            return IDCard.matches(IDCardRegex);
        }
        return false;
    }

    /**
     * 判断字符串是否只含有 汉字、英文和数字
     * <p>
     * 各种字符的unicode编码的范围： 汉字：[0x4e00,0x9fa5]（或十进制[19968,40869]）
     * 数字：[0x30,0x39]（或十进制[48, 57]） 小写字母：[0x61,0x7a]（或十进制[97, 122]）
     * 大写字母：[0x41,0x5a]（或十进制[65, 90]）
     */
    public static boolean isLetterDigitOrChinese(String str) {
        String regex = "^[a-z0-9A-Z\u4e00-\u9fa5]+$";
        return str.matches(regex);
    }

    public static void main(String[] args) {
        String str = "。";
        System.out.println(isLetterDigitOrChinese(str));
    }
}